/*
 * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
 * following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice, this list of conditions and the following
 * disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
 * following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of
 * the dreamlu.net developer nor the names of its contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission. Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.system.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import javax.validation.Valid;

import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;

import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.modules.system.entity.Version;
import org.springblade.modules.system.vo.VersionVO;
import org.springblade.modules.system.service.IVersionService;
import org.springblade.core.boot.ctrl.BladeController;

/**
 * 控制器
 *
 * @author BladeX
 * @since 2021-06-15
 */
@RestController
@AllArgsConstructor
@RequestMapping("blade-system/version")
@Api(value = "", tags = "接口")
public class VersionController extends BladeController {

    private final IVersionService versionService;

    /**
     * 版本添加
     *
     *
     * @param version 版本信息
     * @return 是否新增成功
     */
    @PostMapping("/add")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "新增", notes = "传入version")
    public R<Boolean> add(@Valid @RequestBody Version version) {
        return R.status(versionService.addVersion(version));
    }

    /**
     * 逻辑删除
     *
     *
     * @param ids 要删除的版本id列表
     * @return 是否删除成功
     */
    @PostMapping("/delete")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "删除", notes = "传入ids")
    public R<Boolean> delete(@RequestParam String ids) {
        return R.status(versionService.deleteByIds(Func.toLongList(ids)));
    }



    /**
     * 更新
     *
     *
     * @param version 版本信息
     * @return 是否更新成功
     */
    @PostMapping("edit")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "编辑", notes = "传入version")
    public R<Boolean> updateVersion(@Valid @RequestBody Version version) {
        return R.status(versionService.updateVersion(version));
    }

    /**
     * 详情
     */

    @GetMapping("/detail")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "详情", notes = "传入version")
    public R<Version> detail(Version version) {
        Version detail = versionService.getOne(version);
        return R.data(detail);
    }

    /**
     * 列表查询
     *
     *
     * @return 一页的数据
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "分页", notes = "传入version")
    public R<IPage<VersionVO>> page(VersionVO version, Query query) {
        IPage<VersionVO> pages = versionService.selectVersionPage(Condition.getPage(query), version);
        return R.data(pages);
    }


}
